package com.example.demo.pojo;

import org.springframework.stereotype.Component;

import javax.servlet.http.HttpSession;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Set;

@Component
public class Cart {
    //就是一个购物车  包含多个CartItem
    private HashMap<Integer ,CartItem> items=new HashMap<>();

    public HashMap<Integer, CartItem> getItems() {
        return items; //返回购物车
    }

    //添加家具到Cart
    public  void addItem(CartItem cartItem){
        CartItem item = items.get(cartItem.getId());
        if (item==null){
            //说明当前没有这个家具
            items.put(cartItem.getId(),cartItem);

        }else {
            item.setCount(item.getCount()+1);//数量增加一
            //修改总价
            item.setTotalPrice(item.getPrice().multiply(new BigDecimal(item.getCount())));//数量*单价
        }
    }
    private  Integer totalCount=0;//购物车的总数量

    public Integer getTotalCount() {
        //遍历Items统计数量
        //遍历hashmap
        totalCount=0;
        Set<Integer> integers = items.keySet();
        for (Integer id : integers) {

            totalCount += ((CartItem)items.get(id)).getCount();
        }
        return totalCount;
    }
    public  BigDecimal GetTotalPrice(){
        //遍历items
     BigDecimal  cartTotalPrice = new BigDecimal(0);
        Set<Integer> integers = items.keySet();
        for (Integer id : integers) {
            CartItem item = items.get(id);
            //注意 一定要把 add的值重新赋值 累加
            cartTotalPrice  = cartTotalPrice.add(item.getTotalPrice()) ;
        }
        return  cartTotalPrice;
        //返回购物车的总价
    }
    //todo
    public  void deleteItem(int id){
        //根据id删除购物车项
        items.remove(id);


    }
    public  void clearItem(){

        items.clear();


    }
    public  void updateCount(int id,int count){
        //根据传入的id 和count 修改购物车总价
        CartItem cartItem = items.get(id);
        if (cartItem!=null){
            //如果得到items
            //更新数量
            cartItem.setCount(count);
            //更新总价
            cartItem.setTotalPrice(cartItem.getPrice().multiply(new BigDecimal(cartItem.getCount())));
        }
    }

}
